/**
 * tabbar 状态，增加 storageSync 保证刷新浏览器时在正确的 tabbar 页面
 * 使用reactive简单状态，而不是 pinia 全局状态
 */
import { reactive } from 'vue'

// 获取保存的tabbar索引，如果不存在或无效，则默认为0
function getSavedTabbarIndex(): number {
  try {
    const savedIndex = uni.getStorageSync('app-tabbar-index')
    return typeof savedIndex === 'number' && !isNaN(savedIndex) ? savedIndex : 0
  }
  catch (e) {
    console.error('Failed to get tabbar index from storage:', e)
    return 0
  }
}

export const tabbarStore = reactive({
  curIdx: getSavedTabbarIndex(),
  setCurIdx(idx: number) {
    this.curIdx = idx
    try {
      uni.setStorageSync('app-tabbar-index', idx)
    }
    catch (e) {
      console.error('Failed to save tabbar index to storage:', e)
    }
  },
  // 重置tabbar状态，通常在应用启动或重新进入时调用
  resetState() {
    this.curIdx = getSavedTabbarIndex()
  },
})
